import { DpiProtocolControl } from "../components/Mouse/DPISetting/dpiProtocolUsage";
import { DeviceComm } from "../devices/MouseDevice";
import { useMacroProps } from "../hooks/useMacro";
import { ProfileReturnProps } from "../hooks/useProfile";
import {
  DpiConfig,
  DPIGroup,
  KeyInfo,
  LightConfig,
  LightEffectConfig,
  MacroProfile,
  MouseConfig,
  MouseConfigInfo,
  MouseMacro,
} from "../types/types";
import {
  KeyLayout,
  MouseProfile,
  MouseKey,
  DpiColorConfig,
} from "../types/types.v1.d";

export type MainProps = {
  deviceStatus: boolean;
  setDeviceStatus: Function;
  deviceOnline: boolean;
  setDeviceOnline: Function;
  deviceName: string;
  setDeviceName: Function;
  deviceId: string;
  setDeviceId: Function;
  deviceVersion: string;
  setDeviceVersion: Function;
  dongleVersion: string;
  setDongleVersion: Function;
  currentTab: string;
  setCurrentTab: Function;
  selKeyIndex: number;
  setSelKeyIndex: Function;
  macroProfiles: MacroProfile[];
  setMacroProfiles: Function;
  currentSelectMacroProfile: number;
  setCurrentSelectMacroProfile: Function;
  connectedMouse: DeviceComm | undefined;
  editMode: string;
  setEditMode: Function;
  connectMouse: Function;
  mouseKeys: MouseKey[];
  setMouseKeys: Function;
  mouseConfig: MouseConfig | undefined;
  lightEffectConfig: LightEffectConfig[];
  setLightEffectConfig: Function;
  lightConfig: LightConfig | undefined;
  mouseDPIInfo: DpiConfig | undefined;
  setMouseDPIInfo: Function;
  mouseDPIGroups: DPIGroup[];
  setMouseDPIGroups: Function;
  setLightConfig: Function;
  macroList: MouseMacro[];
  keyInfos: KeyInfo[];
  setKeyInfos: Function;
  disconnectMouse: Function;
  mouseDpi: number;
  setMouseDpi: Function;
  // 添加DPI协议相关状态
  dpiColors: DpiColorConfig | undefined;
  setDpiColors: Function;
  dpiProtocolControl: DpiProtocolControl | undefined;
  setDpiProtocolControl: Function;
  dpiSyncData: boolean;
  setDpiSyncData: Function;
  mouseReportRate: number;
  setMouseReportRate: Function;
  mouseConfigInfo: MouseConfigInfo | undefined;
  setMouseConfigInfo: Function;
  battery: number;
  chargeFlag: number;
  mouseStatus: number;
  t: Function;
  mouseProfile: MouseProfile | undefined;
  setMouseProfile: Function;
  connectMode: string;
  setMatchMode: Function;
  initAllMouseData: Function;
  resetAllMouseKeys: Function;
  resetSingleKey: Function;
  restoreFactorySettings: Function;
  dpiInit: boolean;
  setDpiInit: Function;
  profileIndex: number;
  setProfileIndex: Function;
  profile: ProfileReturnProps;
  loadCustomProfile: Function;
  macro: useMacroProps;
  mouseLayout: KeyLayout[];
  setMouseLayout: (layout: KeyLayout[]) => void;
  matchMode: boolean;
  setDongleInfo: Function;
  hasMacroType4: boolean;
  setHasMacroType4: Function;
  compareVersions: Function;
  // 添加DPI协议方法
  updateDpiColors: Function;
};
